/*
 * stepper_types.h
 *
 *  Created on: Jan 31, 2025
 *      Author: wzx05
 */

#ifndef INC_MOTOR_STEPPER_TYPES_H_
#define INC_MOTOR_STEPPER_TYPES_H_

#include <stdint.h>
#include <stdbool.h>
#include "stm32f1xx_hal.h"

// 电机物理参数配置
typedef struct {
    float gear_ratio;         // 减速比（例如64:1时填64）
    uint16_t steps_per_rev;   // 电机固有步数/圈（未减速）
    uint8_t step_mode;        // 驱动模式：0-全步，1-半步
    const uint8_t* phase_seq; // 相位序列表指针
    uint8_t phase_count;      // 相位序列长度
    uint8_t idle_pattern;     // 电机Idle状态控制Pattern
} MotorSpec;

// 电机运行时状态
typedef struct {
    MotorSpec spec;           // 电机规格参数
    int32_t current_steps;    // 当前步数（计步单位，可为微步计数）
    int32_t target_steps;     // 目标步数
    uint8_t phase_index;      // 当前相位序号
    bool is_homing;           // 是否处于归零状态
} MotorState;

#endif /* INC_MOTOR_STEPPER_TYPES_H_ */
